package com.nenude.corejava.ch12;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MyFileReader {
	/**
	 * 拷贝文件并把小写l全部修改为大写L
	 * 
	 * @param src
	 * @param desc
	 */

	public void copyAndFilter(String src, String desc) {
		if (src == null || desc == null) {
			return;
		}
		File srcFile = new File(src);
		File descFile = new File(desc);

		if (!srcFile.exists()) {
			return;
		}

		FileReader reader = null;
		FileWriter writer = null;
		BufferedReader bufferedReader = null;

		try {
			if (!descFile.exists()) {
				descFile.getParentFile().mkdirs();
				descFile.createNewFile();
			}
			reader = new FileReader(srcFile);// 节点流
			bufferedReader = new BufferedReader(reader);// 处理流
			writer = new FileWriter(descFile);// 节点流

			String date = null;
			// readLine：一次读取一行内容，文件读取完毕返回null;
			while ((date = bufferedReader.readLine()) != null) {
				// 把小写转换成大写
				String newData = date.replaceAll("l", "L");
				// 写入到文件
				writer.write(newData);
				writer.write("\r\n");
			}

		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(writer!=null){
				try {
					writer.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(reader!=null){
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			if(bufferedReader!=null){
				try {
					bufferedReader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}

	/**
	 * 把一段文本内容写入到指定文件中
	 * 
	 * @param fileName
	 * @param content
	 */

	public void witerFile(String fileName, String content) {

		if (fileName == null) {
			System.out.println("文件为null");
			return;
		}

		File file = new File(fileName);
		FileOutputStream outputStream = null;
		try {
			// 文件是否存在
			if (!file.exists()) {
				// 创建父级目录
				file.getParentFile().mkdirs();
				// 创建文件
				file.createNewFile();
			}

			// 开文件流，写数据；文件的写入的两种模式：(flase)重写或覆盖 和 (true)追加
			outputStream = new FileOutputStream(file, true);
			// 需要把字符串转换成字符数组，转换时需要注意可能产生乱码
			outputStream.write(content.getBytes());

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (outputStream != null) {
				try {
					outputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void main(String[] args) {

		MyFileReader fileReader = new MyFileReader();
		// 新增文件，并写入内容
		fileReader.witerFile("c:\\test.txt", "Hello World\r\n");
		System.out.println("文件新增成功！");
		
		fileReader.copyAndFilter("c:\\test.txt", "c:\\test2.txt");

	}

}
